package cn.lzy.config;

import cn.lzy.config.entity.Dog;
import cn.lzy.config.entity.User;
import org.springframework.context.annotation.Bean;

/**
 * @Description  Java配置文件
 * @Author lzy
 * @Date 2023/11/23 23:32
 * @Version
 **/
public class JavaConfig {

    /**
     * @Bean：作用是表示将当前方法的返回值注册到 Spring 容器中，默认情况下，方法名就是 bean name
     * 如果想自定义 BeanName，则可以在 @Bean 注解中进行定义。
     * 此处的dog为新建一个dog
     * @return
     */
    @Bean("u1")
    User user1() {
        User user = new User();
        user.setName("张三");
        user.setAge(25);
        user.setDog(dog());
        return user;
    }


    /**
     * 该种方式的dog参数，会从容器中查找是否存在同类型的Bean
     * (因此，此处的dog实际是容器里的dog)
     * @param dog
     * @return
     */
    @Bean("u2")
    User user2(Dog dog) {
        User user = new User();
        user.setName("李四");
        user.setAge(28);
        user.setDog(dog);
        return user;
    }



    @Bean
    Dog dog() {
        Dog dog = new Dog();
        dog.setName("阿黄");
        dog.setAge(8);
        return dog;
    }
}
